﻿
namespace LightFactory.Extensions.Tests
{
    public interface ITestObject
    {
        string GetMessage();
    }

    [Overrides(typeof(ITestObject))]
    public class Test : ITestObject
    {
        private string _Str = "";
        public const string TEST_O = "Test0";

        public Test(string str)
        {
            _Str = str;
        }

        public Test()
        {
            _Str = TEST_O;
        }
        
        #region ITestObject Members

        public string GetMessage()
        {
            return _Str;
        }

        #endregion
    }

    #region for checking many types registration performance
    public interface ITestObject2
    {
        string GetMessage();
    }


    [Overrides(typeof(ITestObject2))]
    public class Test1 : ITestObject2
    {
        public string GetMessage()
        {
            return "";
        }
    }

    [Overrides(typeof(ITestObject2))]
    public class Test2 : ITestObject2
    {
        public string GetMessage()
        {
            return "";
        }
    }

    [Overrides(typeof(ITestObject2))]
    public class Test3 : ITestObject2
    {
        public string GetMessage()
        {
            return "";
        }
    }

    [Overrides(typeof(ITestObject2))]
    public class Test4 : ITestObject2
    {
        public string GetMessage()
        {
            return "";
        }
    }

    [Overrides(typeof(ITestObject2))]
    public class Test5 : ITestObject2
    {
        public string GetMessage()
        {
            return "";
        }
    }

    [Overrides(typeof(ITestObject2))]
    public class Test6 : ITestObject2
    {
        public string GetMessage()
        {
            return "";
        }
    }

    [Overrides(typeof(ITestObject2))]
    public class Test7 : ITestObject2
    {
        public string GetMessage()
        {
            return "";
        }
    }

    [Overrides(typeof(ITestObject2))]
    public class Test8 : ITestObject2
    {
        public string GetMessage()
        {
            return "";
        }
    }

    [Overrides(typeof(ITestObject2))]
    public class Test9 : ITestObject2
    {
        public string GetMessage()
        {
            return "";
        }
    }

    [Overrides(typeof(ITestObject2))]
    public class Test10 : ITestObject2
    {
        public string GetMessage()
        {
            return "";
        }
    }

    [Overrides(typeof(ITestObject2))]
    public class Test11 : ITestObject2
    {
        public string GetMessage()
        {
            return "";
        }
    }

    [Overrides(typeof(ITestObject2))]
    public class Test12 : ITestObject2
    {
        public string GetMessage()
        {
            return "";
        }
    } 
    #endregion
}